<?php
//2.5.6.2 松散比较 ==
var_dump(true==false); //bool(false)
var_dump(true>false);  //bool(true)
//逻辑值和其他类型比较，其他都转换为逻辑值。
var_dump(true==50); //bool(true) 数值：0为false，非0为true
var_dump(true=="hello"); //bool(true) 字符串：""和"0"为false，其他都为true
var_dump(true==[]); //bool(false)  null和 [] 为false
//数值和字符串比较，若is_numeric(字符串)为true，则转换为数值进行比较，否则转换为字符串进行比较
var_dump(is_numeric("  123  ")); //bool(true)
var_dump(100=="1e2"); //bool(true) // "1e2"是100
var_dump(100>'9a'); //bool(false) 100 是 "100"
//严格比较就是值和类型都相同才相等
var_dump(true===1); // bool(false)
var_dump(0==false); //bool(true)
var_dump(0===false); //bool(false)
//条件运算符
var_dump(123?555:666); //int(555)
var_dump("Hello"?:"world"); //string(5) "Hello"
var_dump("0"?:"world"); //string(5) "world"
//2.5.8 NULL 合并运算符
var_dump(""??12345); //string(0) ""
var_dump($m??"1234567"); //string(7) "1234567"
//字符串运算符. 拼接字符串
var_dump(123 . 456); //string(6) "123456"

//数组解构
$a=[98,88,77];
$p1=$a[0];
$p2=$a[1];
$p3=$a[2];
echo "p1=$p1, p2=$p2, p3=$p3\n"; //p1=98, p2=88, p3=77
[$p1, $p2, $p3]=$a;
echo "p1=$p1, p2=$p2, p3=$p3\n"; //p1=98, p2=88, p3=77
$a=["name"=>"张三", "age"=>19];
['name'=>$n, 'age'=>$age] = $a;
echo "name=$n, age=$age\n"; //name=张三, age=19
//交换两个变量的值
$b1=123; $b2=456;
[$b1, $b2] = [$b2, $b1];
echo "b1=$b1, b2=$b2\n";

//3.3 数组解包, ...前缀的一个array可以被展开到当前位置
$a1=["age"=>20,44];
$a2=[11,22, ...$a, 33, ...$a1 ]; //整数键重新编号，重复字符串键会覆盖
print_r($a2);